package com.movie.mapper;

import com.movie.entity.Review;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

@Mapper
public interface ReviewMapper {
    // 根据 ID 查找评论
    Review findById(@Param("id") Long id);

    // 根据电影 ID 查找评论
    List<Review> findByMovieId(@Param("movieId") Long movieId);

    // 根据用户 ID 查找评论
    List<Review> findByUserId(@Param("userId") Long userId);

    // 插入新评论
    int insert(Review review);

    // 更新评论 (通常不允许用户修改评论，但管理员可能需要)
    int update(Review review);

    // 根据 ID 删除评论
    int deleteById(@Param("id") Long id);

    // 查询所有评论 (可能需要分页，用于后台管理)
    List<Review> findAll();

    // 分页查询所有评论
    List<Review> findAllPaged(
            @Param("limit") int limit,
            @Param("offset") int offset,
            @Param("movieTitle") String movieTitle,
            @Param("username") String username,
            @Param("rating") Integer rating);

    // 获取所有评论的总数
    int countAll();

    // 新增：根据用户ID和电影ID查找评论
    Review findByUserIdAndMovieId(@Param("userId") Long userId, @Param("movieId") Long movieId);

    // 新增：获取带筛选条件的评论总数的方法签名
    int countAllFiltered(
            @Param("movieTitle") String movieTitle,
            @Param("username") String username,
            @Param("rating") Integer rating);

    // 更新评论 (已存在，移除重复声明)
    // int update(Review review);
} 